// miniprogram/pages/home/home.js
Page({

  /**
   * 页面的初始数据(类似vue组件的data)
   */
  data: {
    //菜单栏列表数据
    aisdeMenuList: [],

    //激活菜单栏的下标
    activeMenuIndex: 0,

    //正在加载中
    loading: true,

    //商品数据
    products: [],

    //购物车数量
    shopcartCount: 0,

    //购物车的_ids集合
    _ids: [],

    isAdd: false
  },

  /**
   * 生命周期函数--监听页面加载，一般用于初始化页面数据(类似vue的created)
   */
  onLoad(options) {
    console.log('初始化数据');

    //获取菜单列表数据
    this.getMenuList();

    //根据商品类型获取商品数据
    this.getProductByType('hanbao');
  },

  //页面显示执行
  onShow() {
    this.getShopcartData();
  },

  //获取购物车数据
  getShopcartData() {
    //开启加载提示
    wx.showLoading({
      title: '加载中...',
      mask: true
    })
    //调用云函数【get_shopcart】
    wx.cloud.callFunction({
      //云函数名称
      name: 'get_shopcart',

      //成功执行
      success: result => {

        //关闭加载提示
        wx.hideLoading();

        console.log('调用云函数成功');
        console.log('getShopcartData result ==> ', result);

        let data = result.result.data;

        if (Array.isArray(data)) {

          data.map(v => {
            this.data._ids.push(v._id);
          })

          this.setData({
            shopcartCount: data.length
          })
        }

        if(data.length == 0){
          this.setData({
            _ids: []
          })
        }

      },

      // 失败
      fail: err => {
        //关闭加载提示
        wx.hideLoading();
        
        console.log('err ==> ', err);
      }
    })
  },

  //获取菜单列表数据
  getMenuList() {
    //开启加载提示
    wx.showLoading({
      title: '加载中...',
      mask: true
    })
    //调用云函数【get_menu_list】
    wx.cloud.callFunction({
      //云函数名称
      name: 'get_menu_list',

      //成功执行
      success: result => {

        //关闭加载提示
        wx.hideLoading();

        // console.log('调用云函数成功');
        // console.log('result ==> ', result);

        //修改data数据只能通过this.setData()修改, 这样页面才会响应，否则如果this.data.aisdeMenuList = result.result.data 修改的话，页面是无法响应式
        this.setData({
          aisdeMenuList: result.result.data
        })
        // console.log('this.data.aisdeMenuList ==> ', this.data.aisdeMenuList);
      },

      // 失败
      fail: err => {
        //关闭加载提示
        wx.hideLoading();
        
        console.log('err ==> ', err);
      }
    })
  },

  //切换菜单栏列表
  toggleMenuList(e) {
    //e: 事件对象
    // console.log('e ==> ', e);
    let currentIndex = e.currentTarget.dataset.index;
    if (currentIndex == this.data.activeMenuIndex) {
      return;
    }

    this.setData({
      activeMenuIndex: currentIndex
    })

    // console.log(e.currentTarget.dataset.type)

    //切换商品数据
    this.getProductByType(e.currentTarget.dataset.type);
  },

  //根据商品类型获取商品数据
  getProductByType(type) {

    //type: 商品类型

    wx.showLoading({
      title: '加载中...',
      mask: true
    })

    //调用云函数【get_products】
    wx.cloud.callFunction({
      name: 'get_products',

      //携带参数
      data: {
        type
      },

      success: result => {
        wx.hideLoading();

        // console.log('result ==> ', result);

        result.result.data.map(v => {
          v.rules.map(item => {
            item.currentIndex = -1;
          })
        })

        this.setData({
          loading: false,
          products: result.result.data
        })
        
      },
      fail: err => {
        wx.hideLoading();
        console.log('err ==> ', err);
      }
    })
  },

  //修改currentIndex
  modifyCurrentIndex(e) {
    // console.log('modifyCurrentIndex e ==> ', e);
    // console.log('modifyCurrentIndex e.detail ==> ', e.detail);

    let index = e.currentTarget.dataset.index;
    console.log('modifyCurrentIndex index ==> ', index);
    

    this.data.products[index].rules[e.detail.rulesIndex].currentIndex = e.detail.index;

    this.setData({
      products: this.data.products
    })
  },

  //添加购物车成功后，累加数量
  modifyShopcartCount(e) {
    console.log('modifyShopcartCount e.detail ==> ', e.detail);

    this.data._ids.push(e.detail._id);


    this.setData({
      shopcartCount: ++this.data.shopcartCount,
      isAdd: true
    })

    setTimeout(() => {
      this.setData({
        isAdd: false
      })
    }, 600)
  },

  //去结算
  toPay() {

    if (this.data._ids.length == 0) {
      wx.showToast({
        title: '请添加商品',
        mask: true,
        duration: 1000,
        icon: 'none'
      })
      return;
    }
    // console.log(this.data._ids)
    //跳转到非tabbar页面
    wx.navigateTo({
      url: '../pay/pay?_ids=' + this.data._ids.join('-')
    })
  }

  
})